In the information age, organizations and individuals generate and store large amounts of data. One popular way of storing this data is on scalable storage systems consisting of nodes and disks. Additional nodes and disks can be added to the system to provide more storage capacity and/or to improve storage response times. In many systems, additional disks may be added and allocated with minimal manual configuration. However, traditional load balancing techniques may suffer from a variety of drawbacks. Static load mappings that keep each client with the same disk until the client is finished suffer from numerous inefficiencies by failing to account for slow clients, extra overhead imposed by other tasks, and similar concerns.
Some systems use dynamic load balancing techniques in an attempt to keep loads evenly distributed across disks. However, traditional dynamic load balancing techniques also suffer from flaws. Some traditional systems may over-correct for imbalances, causing perpetual oscillations between heavily and lightly loaded disks as workloads are repeatedly transferred back and forth. Other traditional systems may fail to account for factors such as differently sized disks and as a result may not efficiently balance workloads between disks. Accordingly, the instant disclosure identifies and addresses a need for additional and improved systems and methods for dynamic load balancing on disks.